﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;

namespace sistem
{
    public partial class ZakljucivanjeOcjenaKontrola : UserControl
    {
        Profesor profesor;
        List<OcjenaUcenik> ocjene;
        float prosjecna = 0;
        public ZakljucivanjeOcjenaKontrola()
        {
            InitializeComponent();
        }


        private void izracunajProsjek(List<OcjenaUcenik> ocj)
        {
            foreach (OcjenaUcenik o in ocjene)
            {
                prosjecna = prosjecna + o.Vrijednost;
            }
            prosjecna = prosjecna / ocjene.Count();
        }

        public ZakljucivanjeOcjenaKontrola(Profesor pr, int ucenik_id, int predmet_id)
        {
            InitializeComponent();
            profesor = pr;
            int brojOpravdanih = 0;
            int brojNeopravdnih = 0;
            int ukupnoIzostanka = 0;
            DAL.DAL dal = DAL.DAL.Instanca;
            dal.kreirajKonekciju("127.0.0.1", "skola", "root", "");
            DAL.DAL.PrisustvoDAO pdao = new DAL.DAL.PrisustvoDAO();
            List<Prisustvo> listaPrisustva = pdao.getByExample("ucenik_id", Convert.ToString(ucenik_id));
            foreach (Prisustvo p in listaPrisustva)
            {
                DAL.DAL.CasDAO cdao= new DAL.DAL.CasDAO();
                Cas cas = cdao.getById(p.CasID);
                if (cas.PredmetID != predmet_id)
                    listaPrisustva.Remove(p);
                else
                {
                    if (p.Prisutnost == false)
                    {
                        ukupnoIzostanka = ukupnoIzostanka + 1;
                        if (p.Opravdanost == true)
                            brojOpravdanih = brojOpravdanih + 1;
                        else
                            brojNeopravdnih = brojNeopravdnih + 1;
                    }
                }
            }
            DAL.DAL.OcjenaUcenikDAO oudao = new DAL.DAL.OcjenaUcenikDAO();
            List<OcjenaUcenik> ocjene = oudao.getByExample("ucenik_id", ucenik_id.ToString());
            foreach (OcjenaUcenik o in ocjene)
            {
                DAL.DAL.CasDAO cdao = new DAL.DAL.CasDAO();
                Cas cas = cdao.getById(o.CasID);
                if (cas.PredmetID != predmet_id)
                    ocjene.Remove(o);
            }
            Thread t = new Thread(() => izracunajProsjek(ocjene));
            t.Start();
            label2.Text = brojOpravdanih.ToString();
            label4.Text = brojNeopravdnih.ToString();
            t.Abort();
            label6.Text = ukupnoIzostanka.ToString();
            label8.Text = prosjecna.ToString();
            dal.terminirajKonekciju();
        }
    }
}
